/**
 * 泛型练习
 */

pub fn test() {
    println!("----------------泛型练习---------------");

    let nl = vec![123, 32, 89, 345, 143];
    println!("最大整数是：{}", largest(&nl));

}

fn get_largest(list: &[i32]) -> i32 {
    let mut l = list[0];
    for &n in list {
        if n > l {
            l = n;
        }
    }
    l
}

// std::cmp::PartialOrd (位于preclude中)中包含 > 运算符的定义
fn largest<T: PartialOrd + Copy>(list: &[T]) -> T {
    // 泛型 T 可能没有实现Copy trait，无法直接使用list[0]进行copy
    let mut res = list[0];
    for &e in list {
        if e > res {
            res = e;
        }
    }
    res
}